package org.uds.android.fitdroid.demo.activity.misc;

import org.uds.android.fitdroid.demo.apis.R;

import android.app.Activity;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;

public class DraggableButton extends Activity{
	
	    /** Called when the activity is first created. */
	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.dragbtn);
	        
	        DisplayMetrics dm=getResources().getDisplayMetrics();
	        final int screenWidth=dm.widthPixels;
	        final int screenHeight=dm.heightPixels-50;
	        
	        final Button b=(Button)findViewById(R.id.btn);
	        
	        b.setOnTouchListener(new OnTouchListener(){   
	   
	   int lastX,lastY;
	         
	         @Override
	   public boolean onTouch(View v, MotionEvent event) {
	    // TODO Auto-generated method stub
	          int ea=event.getAction();
	          Log.i("TAG", "Touch:"+ea); 
	          
	          
	          switch(ea){
	          case MotionEvent.ACTION_DOWN:           
	           
	           lastX=(int)event.getRawX();
	           lastY=(int)event.getRawY();           
	           break;
	          /**
	           * layout(l,t,r,b)
	           * l  Left position, relative to parent 
	                    t  Top position, relative to parent 
	                    r  Right position, relative to parent 
	                    b  Bottom position, relative to parent  
	           * */
	          case MotionEvent.ACTION_MOVE:
	           int dx=(int)event.getRawX()-lastX;
	           int dy=(int)event.getRawY()-lastY;           
	           
	           int l=v.getLeft()+dx; 
	           int b=v.getBottom()+dy;
	           int r=v.getRight()+dx;
	           int t=v.getTop()+dy;
	           if(l<0){
	            l=0;    
	            r=l+v.getWidth();
	           }
	           
	           if(t<0){
	            t=0;
	            b=t+v.getHeight();
	           }
	           
	           if(r>screenWidth){
	            r=screenWidth;
	            l=r-v.getWidth();
	           }
	          
	           if(b>screenHeight){
	            b=screenHeight;
	            t=b-v.getHeight();
	           }
	           v.layout(l, t, r, b);
	           
	           lastX=(int)event.getRawX();
	           lastY=(int)event.getRawY();
	           /*
	           Toast.makeText(DraftTest.this,
	             "当前位置："+l+","+t+","+r+","+b, 
	             Toast.LENGTH_SHORT).show();
	           */
	           v.postInvalidate();           
	           break;
	          case MotionEvent.ACTION_UP:
	           break;          
	          }
	    return false;
	   }});
	    }
	
}
